From 1288ef1707dbb9a38d58be8c0dece6ea15a5ba00 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Sun, 1 Mar 2009 09:36:15 -0500 Subject: [PATCH] Grab changes --- gdk/win32/gdkevents-win32.c | 173 ++++++++++-------------------------- 1 file changed, 49 insertions(+), 124 deletions(-) diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 38651c8c57..67217e34e7 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -573,13 +573,6 @@ find_window_for_mouse_event (GdkWindow* reported_window, return reported_window; else return find_real_window_for_grabbed_mouse_event (reported_window, msg); - -#if 0 - if (p_grab_window == NULL || !p_grab_owner_events) - return reported_window; - else - return find_real_window_for_grabbed_mouse_event (reported_window, msg); -#endif } GdkGrabStatus @@ -2292,19 +2285,11 @@ gdk_event_translate (MSG *msg, /* Let the system handle Alt-Tab, Alt-Space and Alt-F4 unless * the keyboard is grabbed. */ -#if 0 - if (k_grab_window == NULL && - (msg->wParam == VK_TAB || - msg->wParam == VK_SPACE || - msg->wParam == VK_F4)) - break; -#else if (_gdk_display->keyboard_grab.window == NULL && (msg->wParam == VK_TAB || msg->wParam == VK_SPACE || msg->wParam == VK_F4)) break; -#endif /* Jump to code in common with WM_KEYUP and WM_KEYDOWN */ goto keyup_or_down; @@ -2526,32 +2511,12 @@ gdk_event_translate (MSG *msg, doesnt_want_button_press, TRUE)) break; -#if 0 - if (p_grab_window != NULL) - { - GdkWindow *real_window = find_real_window_for_grabbed_mouse_event (window, msg); - - if (real_window != current_window) - synthesize_crossing_events (real_window, GDK_CROSSING_NORMAL, msg); - } - else - { - if (window != current_window) - synthesize_crossing_events (window, GDK_CROSSING_NORMAL, msg); - } - - if (!propagate (&window, msg, - p_grab_window, p_grab_owner_events, p_grab_mask, - doesnt_want_button_press, TRUE)) - break; -#endif - if (GDK_WINDOW_DESTROYED (window)) break; -#if 0 /* Emulate X11's automatic active grab */ - if (!p_grab_window) + /* XXX: Do we still want this with CSW? -- Cody */ + if (!grab_window) { /* No explicit active grab, let's start one automatically */ GDK_NOTE (EVENTS, g_print (" (automatic grab)")); @@ -2561,7 +2526,6 @@ gdk_event_translate (MSG *msg, NULL, NULL, 0); p_grab_automatic = TRUE; } -#endif g_print ("generate_button_event()\n"); @@ -2596,8 +2560,15 @@ gdk_event_translate (MSG *msg, assign_object (&window, find_window_for_mouse_event (window, msg)); -#if 0 - if (p_grab_window != NULL) + grab = _gdk_display_get_last_pointer_grab (_gdk_display); + if (grab != NULL) + { + grab_window = grab->window; + grab_owner_events = grab->owner_events; + grab_mask = grab->event_mask; + } + + if (grab_window != NULL) { GdkWindow *real_window = find_real_window_for_grabbed_mouse_event (window, msg); @@ -2609,10 +2580,6 @@ gdk_event_translate (MSG *msg, if (window != current_window) synthesize_crossing_events (window, GDK_CROSSING_NORMAL, msg); } -#else - if (window != current_window) - synthesize_crossing_events (window, GDK_CROSSING_NORMAL, msg); -#endif #if 0 if (((GdkWindowObject *) window)->extension_events != 0 && @@ -2623,10 +2590,8 @@ gdk_event_translate (MSG *msg, } #endif -#if 0 - if (!propagate (&window, msg, - p_grab_window, p_grab_owner_events, p_grab_mask, - doesnt_want_button_release, TRUE)) + if (!propagate (&window, msg, grab_window, grab_owner_events, + grab_mask, doesnt_want_button_release, TRUE)) { } else if (!GDK_WINDOW_DESTROYED (window)) @@ -2634,23 +2599,12 @@ gdk_event_translate (MSG *msg, generate_button_event (GDK_BUTTON_RELEASE, button, window, orig_window, msg); } -#else - if (!GDK_WINDOW_DESTROYED (window)) - { - generate_button_event (GDK_BUTTON_RELEASE, button, - window, orig_window, msg); - } -#endif -#if 0 - if (p_grab_window != NULL && - p_grab_automatic && - (msg->wParam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON)) == 0) + if (grab_window != NULL && p_grab_automatic && + (msg->wParam && (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON)) == 0) { - /* Terminate automatic grab */ gdk_pointer_ungrab (0); } -#endif return_val = TRUE; break; @@ -2715,46 +2669,10 @@ gdk_event_translate (MSG *msg, } } +#if 0 // XXX - this seems to always block us from creating motion notify events -- Cody if (!propagate (&window, msg, grab_window, grab_owner_events, grab_mask, doesnt_want_button_motion, TRUE)) - break; - -#if 0 - if (p_grab_window != NULL) { - GdkWindow *real_window = find_real_window_for_grabbed_mouse_event (window, msg); - - if (real_window != current_window) - { - if (p_grab_owner_events) - { - synthesize_crossing_events (real_window, GDK_CROSSING_NORMAL, msg); - } - else if (current_window == p_grab_window) - { - synthesize_leave_event (p_grab_window, msg, GDK_CROSSING_NORMAL, GDK_NOTIFY_ANCESTOR); - assign_object (¤t_window, _gdk_root); - } - else if (real_window == p_grab_window) - { - synthesize_enter_event (p_grab_window, msg, GDK_CROSSING_NORMAL, GDK_NOTIFY_ANCESTOR); - assign_object (¤t_window, p_grab_window); - } - } - } - else - { - if (window != current_window) - { - synthesize_crossing_events (window, GDK_CROSSING_NORMAL, msg); - } - } - - if (!propagate (&window, msg, - p_grab_window, p_grab_owner_events, p_grab_mask, - doesnt_want_button_motion, TRUE)) - { - g_print ("!propagate\n"); break; } #endif @@ -2764,7 +2682,6 @@ gdk_event_translate (MSG *msg, if (window != orig_window) { - g_print ("translate_mouse_coords()\n"); translate_mouse_coords (orig_window, window, msg); } @@ -2846,12 +2763,20 @@ gdk_event_translate (MSG *msg, assign_object (&window, new_window); } -#if 0 - if (!propagate (&window, msg, - p_grab_window, p_grab_owner_events, p_grab_mask, - doesnt_want_scroll, TRUE)) + grab = _gdk_display_get_last_pointer_grab (_gdk_display); + if (grab != NULL) + { + grab_window = grab->window; + grab_mask = grab->event_mask; + grab_owner_events = grab->owner_events; + } + + if (!propagate (&window, msg, grab_window, + grab_owner_events, + grab_mask, + doesnt_want_scroll, + TRUE)) break; -#endif if (GDK_WINDOW_DESTROYED (window)) break; @@ -3073,17 +2998,15 @@ gdk_event_translate (MSG *msg, SetForegroundWindow (GDK_WINDOW_HWND (impl->transient_owner)); } -#if 0 - if (p_grab_window == window) + grab = _gdk_display_get_last_pointer_grab (_gdk_display); + if (grab != NULL) { - gdk_pointer_ungrab (msg->time); + if (grab->window == window) + gdk_pointer_ungrab (msg->time); } - if (k_grab_window == window) - { - gdk_keyboard_ungrab (msg->time); - } -#endif + if (_gdk_display->keyboard_grab.window == window) + gdk_keyboard_ungrab (msg->time); } return_val = TRUE; @@ -3113,14 +3036,14 @@ gdk_event_translate (MSG *msg, if (msg->wParam == SIZE_MINIMIZED) { /* Don't generate any GDK event. This is *not* an UNMAP. */ - -#if 0 - if (p_grab_window == window) - gdk_pointer_ungrab (msg->time); - - if (k_grab_window == window) + grab = _gdk_display_get_last_pointer_grab (_gdk_display); + if (grab != NULL) + { + if (grab->window == window) + gdk_pointer_ungrab (msg->time); + } + if (_gdk_display->keyboard_grab.window == window) gdk_keyboard_ungrab (msg->time); -#endif gdk_synthesize_window_state (window, GDK_WINDOW_STATE_WITHDRAWN, @@ -3560,13 +3483,15 @@ gdk_event_translate (MSG *msg, if (window == current_window) assign_object (¤t_window, _gdk_root); -#if 0 - if (p_grab_window == window) - gdk_pointer_ungrab (msg->time); + grab = _gdk_display_get_last_pointer_grab (_gdk_display); + if (grab != NULL) + { + if (grab->window == window) + gdk_pointer_ungrab (msg->time); + } - if (k_grab_window == window) + if (_gdk_display->keyboard_grab.window == window) gdk_keyboard_ungrab (msg->time); -#endif if ((window != NULL) && (msg->hwnd != GetDesktopWindow ())) gdk_window_destroy_notify (window); -- 2.30.2